/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Blackjack;

import java.util.List;

/**
 *
 * @author Michal
 */
public class Sistem {
    private VentMenu VM;
    private DriverSesion DS;
    private DriverRanking DR;
    private DriverHelp DH; // O VentAyuda si realmente Ayuda es tan sencillo que se puede gestionar desde la ventanna
    private int helpstate; // Saber desde donde se ha llamado a ayuda para poder retornar el control: 0 Menu 1 Sesion 2 Ranking

    public Sistem() {
        VM = new VentMenu(this);
    }

    public void nuevaPartida() {
        VM.setEnabled(false);
        VM.setVisible(false);
        DS = new DriverSesion(this);
        DS.nuevaPartida();
    }

    public void cargarBorrarPartida() {
        VM.setEnabled(false);
        DS = new DriverSesion(this);
        DS.cargarBorrarPartida();
    }

    public void mostrarRanking() {
        VM.setEnabled(false);
        VM.setVisible(false);
        DR = new DriverRanking(this, 1);
        DR.mostrarRanking();
    }

    public void mostrarAyuda(int proc) {
        if (proc == 0) VM.setEnabled(false);
        helpstate = proc;
        DH = new DriverHelp(this);
        DH.mostrarAyuda();
    }

    public void retornarControl() {
        if (helpstate == 0) VM.setEnabled(true);
        else if (helpstate == 1) DS.retornarControl();
        //else DR.retorna(); //nunca se la llama desde el ranking no? el problema es que si se abre la ayuda,
                          // y se va luego al ranking, se activaria otra cosa que igual deberia estar bloqueada
                          // hasta que se cierre el ranking
    }

    public void ocultarMenu() {
        VM.setVisible(false);
    }

    public void volverAlMenu() {
        VM.setVisible(true);
        VM.setEnabled(true);
    }

    public void finPartida(List l) { // l es la Lista con los nombres y su puntuación en la sesión precedidos de un int que es ell tipo de ranking a actualizar
        DR = new DriverRanking(this, 0);
        DR.actualizarRanking(l); // si no se muestra el ranking al actualiuzar, actualizar debe ejecutar volverAlMenu al finalizar
        DR.abrirRanking((Integer)l.get(0)); 
    }
}
